package abs.web.jsf;

import abs.dao.CompaniasDAO;
import abs.dao.RetencionesDAO;

import abs.domain.Companias;
import abs.domain.Retenciones;

import abs.service.RetencionesService;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Scope;

import org.springframework.stereotype.Component;

import org.springframework.transaction.annotation.Transactional;

/**
 * Spring Component that handles CRUD requests for Retenciones entities
 * 
 */
@Scope("session")
@Component("RetencionesComponent")
public class RetencionesComponentImpl implements RetencionesComponent {

	/**
	 * Data type variable that provides CRUD operations for Retenciones entities
	 * 
	 */
	private Retenciones retenciones;

	/**
	 * DAO injected by Spring that manages Companias entities
	 * 
	 */
	private Companias companias;

	/**
	 * DAO injected by Spring that manages Companias entities
	 * 
	 */
	@Autowired
	private CompaniasDAO companiasDAO;

	/**
	 * DAO injected by Spring that manages Retenciones entities
	 * 
	 */
	@Autowired
	private RetencionesDAO retencionesDAO;

	/**
	 * Service injected by Spring that provides CRUD operations for Retenciones entities
	 * 
	 */
	@Autowired
	private RetencionesService retencionesService;

	/** 
	 */
	public RetencionesComponentImpl() {
	}

	/**
	 * Get Companias entity by Retenciones
	 * 
	 */
	@Transactional
	public Companias getRetencionesCompanias(String rt100cdgoKey) {
		return retencionesDAO.findRetencionesByPrimaryKey(rt100cdgoKey).getCompanias();
	}

	/**
	 * Getter for variable Retenciones
	 * 
	 */
	@Transactional
	public Companias getCompanias() {
		return companias;
	}

	/**
	 * Create a new Companias entity
	 * 
	 */
	@Transactional
	public String newRetencionesCompanias(String retenciones_rt100cdgo) {
		companias = new Companias();

		return "/jsf/retenciones/companias/createCompanias.xhtml";
	}

	/**
	 * Select the Retenciones entity for display allowing the user to confirm that they would like to delete the entity
	 * 
	 */
	@Transactional
	public String confirmDeleteRetenciones(String rt100cdgoKey) {
		retenciones = retencionesDAO.findRetencionesByPrimaryKey(rt100cdgoKey);

		return "/jsf/retenciones/deleteRetenciones.xhtml";
	}

	/**
	 * Save an existing Companias entity
	 * 
	 */
	@Transactional
	public String saveRetencionesCompanias(String retenciones_rt100cdgo, Companias companias) {
		retenciones = retencionesService.saveRetencionesCompanias(retenciones_rt100cdgo, companias);

		return "/jsf/retenciones/viewRetenciones.xhtml";
	}

	/**
	 * Show all Retenciones entities
	 * 
	 */
	@Transactional
	public List<Retenciones> listRetencioness() {
		return new java.util.ArrayList<Retenciones>(retencionesService.loadRetencioness());
	}

	/**
	 * Edit an existing Companias entity
	 * 
	 */
	@Transactional
	public String editRetencionesCompanias(String retenciones_rt100cdgo, String related_companias_co000nocia) {
		companias = companiasDAO.findCompaniasByPrimaryKey(related_companias_co000nocia, -1, -1);
		return "/jsf/retenciones/companias/editCompanias.xhtml";
	}

	/**
	 * Save an existing Retenciones entity
	 * 
	 */
	@Transactional
	public String saveRetenciones(Retenciones retenciones) {
		retencionesService.saveRetenciones(retenciones);
		return "/jsf/retenciones/listRetencioness.xhtml";
	}

	/**
	 * Delete an existing Companias entity
	 * 
	 */
	@Transactional
	public String deleteRetencionesCompanias(String retenciones_rt100cdgo, String related_companias_co000nocia) {
		retenciones = retencionesService.deleteRetencionesCompanias(retenciones_rt100cdgo, related_companias_co000nocia);

		return "/jsf/retenciones/viewRetenciones.xhtml";
	}

	/**
	 * Create a new Retenciones entity
	 * 
	 */
	@Transactional
	public String newRetenciones() {
		retenciones = new Retenciones();

		return "/jsf/retenciones/createRetenciones.xhtml";
	}

	/**
	 * Select an existing Retenciones entity
	 * 
	 */
	@Transactional
	public String selectRetenciones(String rt100cdgoKey) {
		retenciones = retencionesDAO.findRetencionesByPrimaryKey(rt100cdgoKey);

		return "/jsf/retenciones/viewRetenciones.xhtml";
	}

	/**
	 * View an existing Companias entity
	 * 
	 */
	@Transactional
	public String selectRetencionesCompanias(String retenciones_rt100cdgo, String related_companias_co000nocia) {
		companias = companiasDAO.findCompaniasByPrimaryKey(related_companias_co000nocia, -1, -1);
		return "/jsf/retenciones/companias/viewCompanias.xhtml";
	}

	/**
	 * Edit an existing Retenciones entity
	 * 
	 */
	@Transactional
	public String editRetenciones(String rt100cdgoKey) {
		retenciones = retencionesDAO.findRetencionesByPrimaryKey(rt100cdgoKey);

		return "/jsf/retenciones/editRetenciones.xhtml";
	}

	/**
	 * Getter for variable Retenciones
	 * 
	 */
	@Transactional
	public Retenciones getRetenciones() {
		return retenciones;
	}

	/**
	 * Select the child Companias entity for display allowing the user to confirm that they would like to delete the entity
	 * 
	 */
	@Transactional
	public String confirmDeleteRetencionesCompanias(String retenciones_rt100cdgo, String related_companias_co000nocia) {
		companias = companiasDAO.findCompaniasByPrimaryKey(related_companias_co000nocia);

		return "/jsf/retenciones/companias/deleteCompanias.xhtml";
	}

	/**
	 * Delete an existing Retenciones entity
	 * 
	 */
	@Transactional
	public String deleteRetenciones(String rt100cdgoKey) {
		Retenciones retenciones = retencionesDAO.findRetencionesByPrimaryKey(rt100cdgoKey);
		retencionesService.deleteRetenciones(retenciones);
		return "/jsf/retenciones/listRetencioness.xhtml";
	}

}
